#ifndef _DEV_DRV_MANAGER_H
#define _DEV_DRV_MANAGER_H

/* 定义配置当前机器是风机还是洗车机 */
#define XP_CONFIG_WASHCAR_ENABLE (1)
#define XP_CONFIG_DRYER_ENABLE (XP_CONFIG_WASHCAR_ENABLE ? 0 : 1)

#if (XP_CONFIG_WASHCAR_ENABLE == 1)
#define XP_CONFIG_WASHCAR_LED_BANNER_ENABLE (1) // 配置开启 LED 横幅引导显示屏
#endif

#define XP_CONFIG_AGV_WHEEL_RS7020_ENABLE (0) // 配置使用雷赛 RS7020 作为 AGV 轮子的驱动电机
#define XP_CONFIG_AGV_WHEEL_DMKE_ENABLE (0)
#define XP_CONFIG_AGV_WHEEL_HCFA_ENABLE (0)

/*typedef enum {
    xp_false = 0,
    xp_true = 1,
} xp_bool;*/

/* 包含驱动程序的接口函数声明，应用层可直接引入当前头文件即可 */
#include "../../driver/display/led_banner.h"

/**
 * @brief 通过 modbus 的设备ID从modbus设备列表中查找对应的 modbus 设备对象
 * @param       sid: modbus 从设备的 id
 * @return      返回 modbus 设备对象的引用地址
 */
extern struct xp_modbus_device *get_modbus_device_by_sid(unsigned char sid);

/**
 * @brief 通过 modbus 的设备名字从modbus设备列表中查找对应的 modbus 设备对象
 * @param       name: modbus 从设备的名字，对应到modbus设备对象的name属性
 * @return      返回 modbus 设备对象的引用地址
 */
extern struct xp_modbus_device *get_modbus_device_by_name(unsigned char *name);

/**
 * @brief 对系统中用到的设备进行初始化
 * @return      返回 0 表示所有设备均初始化成功
 */
extern int xp_common_device_init();

#endif
